home *** CD-ROM | disk | FTP | other *** search
/ Aminet 48 / Aminet 48 (2002)(GTI - Schatztruhe)[!][Apr 2002].iso / Aminet / dev / src / intuistar.lha / Fraktalstern / fraktalstern.c next >
Encoding:
C/C++ Source or Header  |  2001-12-27  |  1.5 KB  |  75 lines

  1. /*  Fraktalstern
  2.  *  Norman Walter 26.12.2001
  3.  *  Demonstriert rekursive Algorithmen
  4.  *  und die Verwendung der Amiga Grafik-Primitiven
  5.  */
  6.  
  7. #include <exec/types.h>
  8. #include <intuition/intuition.h>
  9. #include <graphics/gfx.h>
  10.  
  11. struct IntuitionBase *IntuitionBase;
  12. struct GfxBase *GfxBase;
  13. struct Screen *Screen;
  14. struct Window *Window;
  15. struct RastPort *rp;
  16.  
  17. #include "stdwindow.h"  /* Eigenes Include-Flie */
  18.  
  19. void box(int x, int y, int r)
  20.  
  21. {
  22.    /* Zeichnet ein Quadrat mit Radius r an den Koordinaten x,y */
  23.    /* Es werden die Grafik-Primitiven aus dem ROM verwendet    */
  24.  
  25.    RectFill(rp,x-r,y-r,x+r,y+r);  // Rechteck zeichnen
  26.  
  27. }
  28.  
  29. void star( int x, int y, int r)
  30.  
  31.    /* Zeichnet Fraktalstern durch rekursive Funktionsaufrufe */
  32.  
  33. {
  34.     if (r>0)
  35.         {
  36.             star(x-r,y+r,r/2);
  37.             star(x+r,y+r,r/2);
  38.             star(x-r,y-r,r/2);
  39.             star(x+r,y-r,r/2);
  40.             box(x,y,r);
  41.         }
  42.  
  43. }
  44.  
  45.  
  46. void main(void)
  47.     {
  48.  
  49.         open_libs(); /* Librarys öffnen */
  50.  
  51.         Window = (struct Window *) open_window(
  52.                   20,20,400,300," Fraktalstern ",
  53.                   WINDOWCLOSE | WINDOWDRAG | WINDOWDEPTH | ACTIVATE | GIMMEZEROZERO,
  54.                   CLOSEWINDOW, NULL);
  55.  
  56.         /* GIMMEZEROZERO verhindert, daß SystemGadgets übermalt werden */
  57.  
  58.         if (Window == NULL) exit(FALSE);
  59.  
  60.         rp = Window->RPort;
  61.  
  62.         /* Fensterinhalt übermalen */
  63.         SetAPen(rp, 1L);
  64.         RectFill(rp,0,0,400,300);
  65.  
  66.       SetAPen(rp, 2L);  // Farbe setzen
  67.  
  68.         /* Fraktalstern zeichnen */
  69.       star(200,150,80);
  70.  
  71.         /* Warte auf Mausklick in Close-Gadget */
  72.         Wait(1L<< Window->UserPort->mp_SigBit);
  73.         close_all(); /* Alles schließen */
  74.     }
  75.